Virtualization techniques have been developed to enhance memory management for memory space having a size exceeding actual physical capacity of a memory device. Typically, memory virtualization can be based on memory swapping using a storage device coupled to the memory device. As memory objects and/or IO (input/output) sizes are not deterministic, different sizes or pages of memory which are uncompressed may be swapped in/out between the storage and memory devices. As a result, IO through put and/or latency for transferring stored memory data for the swap memory may negatively impact the performance of the virtual memory system.
Further, the performance of certain storage devices, such as spin based hard disks, may have strong dependency on data locality for memory access to reduce lengthy disk spins. However, data locality may not be guaranteed during runtime as clustering characteristics for memory access vary in different data processing tasks. Thus, memory swapping by paging in/out between the memory device and the storage device to support generic data processing tasks can further degrade the perceived performance of the memory system.
Although the trend of adopting larger and larger sizes of actual physical memory tends to alleviate performance cost in inter device memory swap, certain feature enhancements in data processing systems may be provided without memory size changes. For example, support for higher screen resolution may be imposed on existing devices based on substantially the same amount of memory size. However, a mere two times higher screen resolution may correspond to four times increase in window buffer sizes. As a result, without a compensating increase in physical memory size, the system performance for higher screen resolution may degrade and become visibly slower.
Therefore, traditional implementations of virtual memory systems are not capable of supporting performance requirements constrained by limited physical memory sizes.